﻿
#include"menu.h"
#include"options.h"
#include"TandS.h"

pTec Thead=NULL;//定义指向教师的指针
pStu Shead=NULL;//定义指向学生的指针

//登录主界面
void main_menu()
{
    char input;
	printf("┏ ★   ┓┏ ☆  ┓┏ ★  ┓┏ ☆  ┓┏ ★  ┓┏ ☆  ┓┏ ★  ┓┏ ☆  ┓\n");
	printf("┠  学    生    信    息    管    理    系    统 ┨\n");
	printf("┗  ★  ┛┗ ★  ┛┗ ☆  ┛┗ ★  ┛┗ ☆  ┛┗ ★  ┛┗ ☆  ┛┗ ★  ┛\n");
	printf("┃                                               ┃\n");
	printf("┃            1、 登   录                        ┃\n");
	printf("┃            0、 退   出             ●  ╭○ ╮    ┃\n");
	printf("┃                                 ☆ /█∨ /█\\ ☆   ┃\n");
	printf("┃                                    ∏　 ∏      ┃\n");
	system("date");
	printf("╚┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅╝\n ");
	printf("请输入： 1 or 0 :\n");
    input=getchar();
    switch(input)
    {
        case '1':
			system("clear");
			login();
			system("clear");
			main_menu();
            break; 
        case '0': 
            return ;
        default:
            system("clear");
            main_menu();
			break;
	}  
	return ;
}
//登录选择界面  +  登录验证
void login()
{
	printf("******************************************\n");
	printf("********** *请选择登录用户* **************\n");
	printf("==========================================\n");
	printf("+                                        +\n");
	printf("+****          1、学  生             ****+\n");
	printf("+****          2、教  师             ****+\n");
	printf("+****          3、管理员             ****+\n");
	printf("+****          0、注  销             ****+\n");
	printf("+########################################+\n");
	char select;
	printf("请输入： 0~3 :\n");
    select=getchar();
    switch(select)
    {
        case '1':
			if(!check_suser(Shead))
				{system("clear");student_menu();}
			system("clear");
			login();
            break; 
        case '2': 
			if(!check_tuser(Thead))
				{system("clear");teacher_menu();}
            system("clear");
			login();
			break;
		case '3':
			if(!check_ruser())
				{system("clear");admin_menu();}
            system("clear");
			login();
			break;
		case '0':
			return ;
			break;
        default:
           
            system("clear");
			login();
			break;
	}  
	return ;
}
void teacher_menu() //教师选择界面
{
	printf("←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→\n");
	printf("←★→←★→←★→  欢迎登录学生管理系统  ←★→←★→←★→\n");
	printf("←☆━━^-^o☆━━^-^o☆━━^-^o☆━━^-^o☆━━^-^o☆━━^-^\n");
	printf("↓                                        ↓\n");
	printf("↓****      ※ 1、录入学生成绩          ***↓\n");
	printf("↓****      ※ 2、修改学生成绩          ***↓\n");
	printf("↓****      ※ 3、查 看 成 绩           ***↓\n");
	printf("↓****      ※ 4、查 看 排 名           ***↓\n");
	printf("↓****      ※ 5、修 改 密 码           ***↓\n");
	printf("↓****      ※ 6、完善个人信息          ***↓\n");
	printf("↓****      ※ 7、查看教师信息          ***↓\n");
	printf("↓****      ※ 0、 注    销             ***↓\n");
	printf("←****************************************←\n");
	char select;
	printf("请输入： 0～6 :\n");
    select=getchar();
    switch(select)
    {
        case '1':
            addgrades(Shead);
            system("clear");
		    teacher_menu();
            break; 
        case '2': 
            changegrades(Shead);
            system("clear");
			teacher_menu();
            break;
		case '3':
			system("clear");
			check_grades_menu();
			system("clear");
			teacher_menu();
			break;
		case '4':
			system("clear");
			check_rank_menu();
			system("clear");
			teacher_menu();
			break;
		case '5':
		    Thead=changeTpasswd(Thead);
		    system("clear");
			teacher_menu();
			break;
		case '7':
		    checkTinfo(Thead);
		    system("clear");
		    teacher_menu();
			break;
		case '6':
		    changeTinfo(Thead);
		    system("clear");
		    teacher_menu();
			break;
		case '0':
			return ;
		default:
            
            system("clear");
            teacher_menu();
			break;
	}  
	return ;
}
void student_menu() //学生选择界面
{
	printf("←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→\n");
	printf("←★→←★→←★→  欢迎登录学生管理系统  ←★→←★→←★→\n");
	printf("←☆━━^-^o☆━━^-^o☆━━^-^o☆━━^-^o☆━━^-^o☆━━^-^\n");
	printf("↓                                        ↓\n");
	printf("↓****      ※ 1、查 看 成 绩           ***↓\n");
	printf("↓****      ※ 2、查 看 排 名           ***↓\n");
	printf("↓****      ※ 3、修 改 密 码           ***↓\n");
	printf("↓****      ※ 4、完善个人信息          ***↓\n");
	printf("↓****      ※ 5、查看学生信息          ***↓\n");
	printf("↓****      ※ 0、 注    销             ***↓\n");
	printf("←****************************************←\n");
	char select;
	printf("请输入： 0～4 :\n");
    select=getchar();
    switch(select)
    {
        case '1':
			system("clear");
			check_grades_menu();
			system("clear");
			student_menu();
            break; 
        case '2': 	
			system("clear");
			check_rank_menu();
			system("clear");
			student_menu();
            break;
		case '3':
		    Shead=changeSpasswd(Shead);
		    system("clear");
			student_menu();
			break;
		case '5':
		    checkSinfo(Shead);
		    system("clear");
		    student_menu();
			break;
		case '4':
		    changeSinfo(Shead);
		    system("clear");
		    student_menu();
			break;
		case '0':
			return ;
		default:
            
            system("clear");
            student_menu();
			break;
	}  
	return ;
}
void admin_menu()  //管理员界面
{
	
	printf("←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→←★→\n");
	printf("←★→←★→←★→  欢迎登录学生管理系统  ←★→←★→←★→\n");
	printf("←☆━━^-^o☆━━^-^o☆━━^-^o☆━━^-^o☆━━^-^o☆━━^-^\n");
	printf("↓                                        ↓\n");
	printf("↓****      ※ 1、添加学生用户          ***↓\n");
	printf("↓****      ※ 2、添加教师用户          ***↓\n");
	printf("↓****      ※ 3、删除学生用户          ***↓\n");
	printf("↓****      ※ 4、删除教师用户          ***↓\n");
	printf("↓****      ※ 5、查看系统用户          ***↓\n");
	printf("↓****      ※ 0、 注    销             ***↓\n");
	printf("←****************************************←\n");
	char select;
	printf("请输入： 0～6 :\n");
    select=getchar();
    switch(select)
    {
        case '1':
			Shead=add_student(Shead);
			system("clear");
			admin_menu();
            break; 
        case '2':
			Thead=add_teacher(Thead);
			system("clear");
			admin_menu();
            break;
		case '3':
			Shead=del_student(Shead);
			system("clear");
			admin_menu();
			break;
		case '4':
			Thead=del_teacher(Thead);
			system("clear");
			admin_menu();
			break;
		case '5':
			check_allusers(Shead,Thead);
			system("clear");
			admin_menu();
			break;
		case '0':
			return ;
		default:
            
            system("clear");
            admin_menu();
			break;
	}  
	return ;
}
void check_grades_menu()//查看成绩界面
{
	printf("******************************************\n");
	printf("***********  *查看学生成绩*  *************\n");
	printf("==========================================\n");
	printf("+                                        +\n");
	printf("+****        1、查看个人成绩         ****+\n");
	printf("+****        2、查看所有成绩         ****+\n");
	printf("+****        0、  退   出            ****+\n");
	printf("+########################################+\n");
	int select;
	printf("请输入： 1~2 :\n");
    select=getchar();
    switch(select)
    {
        case '1':
            checkonegrades(Shead);
            system("clear");
			check_grades_menu();
            break; 
        case '2': 
            checkallgrades(Shead);
            system("clear");
			check_grades_menu();
            break;
		case '0':
			break;
        default:
            
            system("clear");
			check_grades_menu();
			break;
	}  
	return ;
}
void check_rank_menu()  //查看排名界面
{
	printf("******************************************\n");
	printf("**********  *请选查看方式*  **************\n");
	printf("==========================================\n");
	printf("+                                        +\n");
	printf("+****     1、查看单科排名            ****+\n");
	printf("+****     2、查看总排名              ****+\n");
	printf("+****     0、  退  出                ****+\n");
	printf("+########################################+\n");
	char select;
	printf("请输入： 1~2 :\n");
    select=getchar();
    switch(select)
    {
        case '1':
            checkonerank(Shead);
            system("clear");
			check_rank_menu();
            break; 
        case '2': 
            checkallrank(Shead);
            system("clear");
			check_rank_menu();
            break;
		case '0':
			return ;
        default:
            
            system("clear");
			check_rank_menu();
			break;
	}  
	return ;
}
int check_ruser()
{
        char  *input=NULL;
	    char sname[6]="";
		char admin[10]="root";
		char passwd[]="123321";
		do
		{	
			puts("请输入[用户名]");
			scanf("%s",sname);
		}while(0!=strcmp(admin,sname));
		do
		{	
			input=getpass("请输入[密码]:");    //输入密码
		}while(0!=strcmp(input,passwd));
	    check_code();
		printf("管理员: root 登录成功\n");
	    sleep(1); 
		return isSame;
}
//设置验证码
void check_code()
{
    srand(time(0));    // 设1次种子
	int a=rand();
	int b=0,c=0;
	b=a%100000+111111;
	do
	{	
		printf("请输入验证码：%d\n",b);
		scanf("%d",&c);
	}while(b!=c);
	return ;
}

int  check_suser(pStu Shead)//校验登录stu用户
{
    Account act;
	char  *input=NULL;
    
	puts("请输入[用户名]");
	scanf("%s",act.name);
	
	pStu temp=Shead->next;
    for(;temp!=NULL;temp=temp->next)
	{
	    if(0==strcmp(temp->data.name,act.name))
			{
			    input=getpass("请输入密码:");    //输入密码
	            strcpy(act.passwd,input);		
				if(0==strcmp(temp->data.passwd,act.passwd))
				   {
				        check_code();
		                printf("学生： %s 登录成功\n",act.name);
	                    sleep(1);
	                    return isSame; 
	                    break;
					}
					else
					{
					    puts("密码输入错误，请重新登录");
					    sleep(1);
					    break;
					}
		    }
	 }
	 if(temp==NULL)
	   {
	        puts("无此用户");
	        sleep(1);
	   }
	           
    return isDifferent;

}

int  check_tuser(pTec Thead)//校验登录tec用户
{
    Account act;
	char  *input=NULL;
    
	puts("请输入[用户名]");
	scanf("%s",act.name);
	
	pTec temp=Thead->next;
    for(;temp!=NULL;temp=temp->next)
	{
	    if(0==strcmp(temp->data.name,act.name))
			{
			    input=getpass("请输入密码:");    //输入密码
	            strcpy(act.passwd,input);		
				if(0==strcmp(temp->data.passwd,act.passwd))
				   {
				        check_code();
		                printf("教师： %s 登录成功\n",act.name);
	                    sleep(1); 
	                    return isSame;
	                    break;
					    
					}
					else
					{
					    puts("密码输入错误，请重新登录");
					    sleep(1);
					    break;
					}
		    }
	 }
	 if(temp==NULL)
	   {
	        puts("无此用户");
	        sleep(1);
	   }
	           
    return isDifferent;
}

